package br.skytef.stmanager.utils;

import java.io.IOException;
import java.io.InputStream;

import jxl.Sheet;
import jxl.Workbook;
import jxl.WorkbookSettings;
import jxl.read.biff.BiffException;

public class PlanGsurf {
	
	private static Workbook planilha;
	private Sheet sheet;
	private String  mensagemErro;
	private int qtdPDV;
	private String terminal;
	private String RazaoSocial;
	private long cnpj;
	private String cidade;
	private String uf;
	private String revenda;
	private long cnpjRevenda;
	private String politica;
	private String produto;
	private String categoria;
	private String emailCliente;
	private String emailRevenda;
	private String dataAtivacao;
	private String situacao;
	private String dataSolicitacao;
	private String dataSituacao;
	private int dias;	
	private double valorMensal;	
	private double totalDevido;
	
	private static String linhaErrada;
	public static String getLinhaErrada() {return linhaErrada;}
	
	/**
	 * @return the planilha
	 */
	public static Workbook getPlanilha() {
		return planilha;
	}


	/**
	 * @param planilha the planilha to set
	 */
	public static void setPlanilha(Workbook planilha) {
		PlanGsurf.planilha = planilha;
	}


	/**
	 * @return the mensagemErro
	 */
	public String getMensagemErro() {
		return mensagemErro;
	}


	/**
	 * @param mensagemErro the mensagemErro to set
	 */
	public void setMensagemErro(String mensagemErro) {
		this.mensagemErro = mensagemErro;
	}


	/**
	 * @return the qtdPDV
	 */
	public int getQtdPDV() {
		return qtdPDV;
	}


	/**
	 * @param qtdPDV the qtdPDV to set
	 */
	public void setQtdPDV(int qtdPDV) {
		this.qtdPDV = qtdPDV;
	}


	/**
	 * @return the terminal
	 */
	public String getTerminal() {
		return terminal;
	}


	/**
	 * @param terminal the terminal to set
	 */
	public void setTerminal(String terminal) {
		this.terminal = terminal;
	}


	/**
	 * @return the razaoSocial
	 */
	public String getRazaoSocial() {
		return RazaoSocial;
	}


	/**
	 * @param razaoSocial the razaoSocial to set
	 */
	public void setRazaoSocial(String razaoSocial) {
		RazaoSocial = razaoSocial;
	}


	/**
	 * @return the cnpj
	 */
	public long getCnpj() {
		return cnpj;
	}


	/**
	 * @param cnpj the cnpj to set
	 */
	public void setCnpj(long cnpj) {
		this.cnpj = cnpj;
	}


	/**
	 * @return the cidade
	 */
	public String getCidade() {
		return cidade;
	}


	/**
	 * @param cidade the cidade to set
	 */
	public void setCidade(String cidade) {
		this.cidade = cidade;
	}


	/**
	 * @return the uf
	 */
	public String getUf() {
		return uf;
	}


	/**
	 * @param uf the uf to set
	 */
	public void setUf(String uf) {
		this.uf = uf;
	}


	/**
	 * @return the revenda
	 */
	public String getRevenda() {
		return revenda;
	}


	/**
	 * @param revenda the revenda to set
	 */
	public void setRevenda(String revenda) {
		this.revenda = revenda;
	}


	/**
	 * @return the cnpjRevenda
	 */
	public long getCnpjRevenda() {
		return cnpjRevenda;
	}


	/**
	 * @param cnpjRevenda the cnpjRevenda to set
	 */
	public void setCnpjRevenda(long cnpjRevenda) {
		this.cnpjRevenda = cnpjRevenda;
	}


	/**
	 * @return the politica
	 */
	public String getPolitica() {
		return politica;
	}


	/**
	 * @param politica the politica to set
	 */
	public void setPolitica(String politica) {
		this.politica = politica;
	}


	/**
	 * @return the produto
	 */
	public String getProduto() {
		return produto;
	}


	/**
	 * @param produto the produto to set
	 */
	public void setProduto(String produto) {
		this.produto = produto;
	}


	/**
	 * @return the categoria
	 */
	public String getCategoria() {
		return categoria;
	}


	/**
	 * @param categoria the categoria to set
	 */
	public void setCategoria(String categoria) {
		this.categoria = categoria;
	}


	/**
	 * @return the emailCliente
	 */
	public String getEmailCliente() {
		return emailCliente;
	}


	/**
	 * @param emailCliente the emailCliente to set
	 */
	public void setEmailCliente(String emailCliente) {
		this.emailCliente = emailCliente;
	}


	/**
	 * @return the emailRevenda
	 */
	public String getEmailRevenda() {
		return emailRevenda;
	}


	/**
	 * @param emailRevenda the emailRevenda to set
	 */
	public void setEmailRevenda(String emailRevenda) {
		this.emailRevenda = emailRevenda;
	}


	/**
	 * @return the dataAtivacao
	 */
	public String getDataAtivacao() {
		return dataAtivacao;
	}


	/**
	 * @param dataAtivacao the dataAtivacao to set
	 */
	public void setDataAtivacao(String dataAtivacao) {
		this.dataAtivacao = dataAtivacao;
	}


	/**
	 * @return the situacao
	 */
	public String getSituacao() {
		return situacao;
	}


	/**
	 * @param situacao the situacao to set
	 */
	public void setSituacao(String situacao) {
		this.situacao = situacao;
	}


	/**
	 * @return the dataSolicitacao
	 */
	public String getDataSolicitacao() {
		return dataSolicitacao;
	}


	/**
	 * @param dataSolicitacao the dataSolicitacao to set
	 */
	public void setDataSolicitacao(String dataSolicitacao) {
		this.dataSolicitacao = dataSolicitacao;
	}


	/**
	 * @return the dataSituacao
	 */
	public String getDataSituacao() {
		return dataSituacao;
	}


	/**
	 * @param dataSituacao the dataSituacao to set
	 */
	public void setDataSituacao(String dataSituacao) {
		this.dataSituacao = dataSituacao;
	}


	/**
	 * @return the dias
	 */
	public int getDias() {
		return dias;
	}


	/**
	 * @param dias the dias to set
	 */
	public void setDias(int dias) {
		this.dias = dias;
	}


	/**
	 * @return the valorMensal
	 */
	public double getValorMensal() {
		return valorMensal;
	}


	/**
	 * @param valorMensal the valorMensal to set
	 */
	public void setValorMensal(double valorMensal) {
		this.valorMensal = valorMensal;
	}


	/**
	 * @return the totalDevido
	 */
	public double getTotalDevido() {
		return totalDevido;
	}


	/**
	 * @param totalDevido the totalDevido to set
	 */
	public void setTotalDevido(double totalDevido) {
		this.totalDevido = totalDevido;
	}


	public PlanGsurf(InputStream is) throws BiffException, IOException{
		WorkbookSettings workbookSettings = new WorkbookSettings();
		workbookSettings.setEncoding( "Cp1252" );
		planilha = Workbook.getWorkbook(is , workbookSettings);
		sheet = planilha.getSheet(0);
	}

	public boolean validar(){
		try{
			if(!sheet.getCell(0, 0).getContents().toUpperCase().trim().equals("NO.")){
				mensagemErro = "Erro: Coluna \"No.\"";
				return false;
			}	

			if(!sheet.getCell(1, 0).getContents().toUpperCase().trim().equals("TERMINAL")){
				mensagemErro = "Erro: Coluna \"Terminal\"";
				return false;
			}	

			if(!sheet.getCell(2, 0).getContents().toUpperCase().trim().equals("RAZAO SOCIAL")){
				mensagemErro = "Erro: Coluna \"Terminal\"";
				return false;
			}	

			if(!sheet.getCell(3, 0).getContents().toUpperCase().trim().equals("CNPJ")){
				mensagemErro = "Erro: Coluna \"CNPJ\"";
				return false;
			}	

			if(!sheet.getCell(4, 0).getContents().toUpperCase().trim().equals("CIDADE")){
				mensagemErro = "Erro: Coluna \"Cidade\"";
				return false;
			}	

			if(!sheet.getCell(5, 0).getContents().toUpperCase().trim().equals("UF")){
				mensagemErro = "Erro: Coluna \"UF\"";
				return false;
			}	

			if(!sheet.getCell(6, 0).getContents().toUpperCase().trim().equals("REVENDA")){
				mensagemErro = "Erro: Coluna \"Revenda\"";
				return false;
			}

			if(!sheet.getCell(7, 0).getContents().toUpperCase().trim().equals("CNPJ REVENDA")){
				mensagemErro = "Erro: Coluna \"CNPJ Revenda\"";
				return false;
			}

			if(!sheet.getCell(8, 0).getContents().toUpperCase().trim().equals("POLITICA")){
				mensagemErro = "Erro: Coluna \"Politica\"";
				return false;
			}

			if(!sheet.getCell(9, 0).getContents().toUpperCase().trim().equals("PRODUTO")){
				mensagemErro = "Erro: Coluna \"Produto\"";
				return false;
			}

			if(!sheet.getCell(10, 0).getContents().toUpperCase().trim().equals("CATEGORIA")){
				mensagemErro = "Erro: Coluna \"Categoria\"";
				return false;
			}else 
				return true;
		}catch (Exception e){
			setMensagemErro("Planilha inválida");
			return false;
		}
	}
	
	
	public void importarlinha(int i){
		linhaErrada = sheet.getRowView(i).toString();
		setQtdPDV(StrInt(sheet.getCell(0, i).getContents()));
		setTerminal(sheet.getCell(1, i).getContents());
		setRazaoSocial(sheet.getCell(2, i).getContents());
		setCnpj(new Cnpj().StringParaInteiro(sheet.getCell(3, i).getContents()));
		setCidade(sheet.getCell(4, i).getContents().toUpperCase().trim());
		setUf(sheet.getCell(5, i).getContents().toUpperCase().trim());
		setRevenda(sheet.getCell(6, i).getContents().toUpperCase().trim());
		setCnpjRevenda(new Cnpj().StringParaInteiro(sheet.getCell(7, i).getContents()));
		setPolitica(sheet.getCell(8, i).getContents().toUpperCase().trim());
		setProduto(sheet.getCell(9, i).getContents().toUpperCase().trim());
		setCategoria(sheet.getCell(10, i).getContents().toUpperCase().trim());
		setEmailCliente(sheet.getCell(11, i).getContents().toLowerCase().trim());
		setEmailRevenda(sheet.getCell(12, i).getContents().toLowerCase().trim());
		setDataAtivacao(sheet.getCell(13, i).getContents());
		setSituacao(sheet.getCell(14, i).getContents().toUpperCase().trim());
	    setDataSolicitacao(sheet.getCell(15, i).getContents());
		setDataSituacao(sheet.getCell(16, i).getContents());
		setDias(StrInt(sheet.getCell(17, i).getContents()));	    
	    setValorMensal(StrDoble(sheet.getCell(18, i).getContents()));
	    setTotalDevido(StrDoble(sheet.getCell(19, i).getContents()));
	
	}
	public double StrDoble(String valor){
		double num;
		try {
			valor = valor.replace(",",".");
			num = Double.parseDouble(valor);
		} catch (Exception e) {
			num = 0;
		}
		return num;
	}
	public int StrInt(String valor){
		int num;
		try {
			num = Integer.parseInt(valor);
		} catch (Exception e) {
			num = 0;
		}		
		return num;
	}
	
	public int qtlinha(){
		Sheet sheet = planilha.getSheet(0);
		return sheet.getRows();
	}

}
